/*
 * 文件名：JSONUtil.java
 * 版权：© Copyright 2012-2018 广州宝锶信息技术有限公司
 * 创建人：曾毅
 * 创建时间：2017年4月21日 下午3:39:06
 * 修改人：
 * 修改时间：
 * 需改内容：
 * 
 */
package com.baothink.weichat.utils;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import com.baothink.weichat.dto.common.WeichatAgentInfo;


/**
 * TODO<一句话功能描述>
 * TODO<功能详细描述>
 * 
 * @author  曾毅
 * @version 1.0，2017年4月21日 下午3:39:06
 * @since   ASSCWeb1.0
 */
public class JSONUtil {
    
    
    public static String toJsonString(Object obj,String...filters){
    	SimplePropertyPreFilter filter = new SimplePropertyPreFilter(filters);
        return JSON.toJSONString(obj,filter);
    }
    
    /**  
     * json转Bean
     * 
     * @param json
     * @param clz
     * @return
     * @since ASSCWeb1.0
     */
    @SuppressWarnings("unchecked")
    public static <T> T toBean(String json,Class<T> clz){
    	return JSON.parseObject(json, clz);
    }
    
    /**  
     * 将对象的属性及值转成map
     * 
     * @param obj
     * @return
     * @since ASSCWeb1.0
     */
    public static Map<String,String> covertBeanFiledToMap(Object obj,String...excludes){
        return jsonToMap(toJsonString(obj,excludes));
    }
    
    /**  
     * json转map
     * 
     * @param json
     * @return
     * @since ASSCWeb1.0
     */
    @SuppressWarnings("rawtypes")
    public static Map<String,String> jsonToMap(String json){
        Map<String,String> reMap = new HashMap<String, String>();
        try {
            JSONObject jsonObject = JSON.parseObject(json);
            Iterator it =jsonObject.entrySet().iterator();
            while(it.hasNext()){
                Map.Entry<String, Object> next = (Entry<String, Object>) it.next();
                String key = next.getKey();
                String value = next.getValue().toString();
                reMap.put(key, value);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return reMap;
    }
    
    public static Map<String,String> objectToMap(Object obj){
        return jsonToMap(toJsonString(obj));
    }
    
    public static String getValueByKey(String json,String key){
        Map<String, String> jsonToMap = jsonToMap(json);
        return jsonToMap.get(key);
    }
    
    public static void main(String[] args) {
		WeichatAgentInfo info = new WeichatAgentInfo();
		info.setAgentid("test");
		Map<String, String> covertBeanFiledToMap = covertBeanFiledToMap(info);
		System.out.println(covertBeanFiledToMap);
    }
}
